"""
演示：多线程之间共享全局变量

细节：
    1：进程之间数据是相互隔离的，（同一个进程）多个线程之间数据是可以共享的。
    2：多线程，并发操作同一数据对象，有可能引发安全问题，需要使用到线程同步机制。
"""
import threading
import time

# 需求：定义一个全局变量，my_list = [], 创建两个线程，一个线程往列表中写入数据，另一个线程读取列表数据。
# 1: 定义全局变量(被共享了，多个线程操作这个变量的时候，这个数据是被共享的)
my_list = []
print("观察我执行了几次？")

# 2：创建两个线程，分别关联两个函数
# 2.1 定义写数据的函数
def write_data():
    for i in range(10):
        print(f'正在写入数据：{i}' )
        my_list.append(i)
    print(f"写入数据完成， 数据：{my_list}")

# 2.2 定义读取数据的函数
def read_data():
    time.sleep(3)
    print(f"读取数据， 数据：{my_list}")

if __name__ == '__main__':
    # 3: 创建两个线程，分别关联两个函数
    t1 = threading.Thread(target=write_data)
    t2 = threading.Thread(target=read_data)

    # 4: 开启线程
    t1.start()
    t2.start()
